Purpose

Given the clusters of regulating targets and regulated response genes, we want to examine to what extent these are changes in expression levels of particular isoforms.

Initialization

Libraries

library(magrittr)
library(tidyverse)
library(pheatmap)
library(SummarizedExperiment)

Parameters

set.seed(20210818)

## input files
FILE_WUI="tbl/df_wui_kd6_essential_ui10.Rds"

CSV_TARGETS="tbl/df_target_nnclusters_kd6_essential_ui10.csv"
CSV_GENES="tbl/df_gene_nnclusters_kd6_essential_ui10.csv"
NULL_CLUSTERS=as.character(c(9,12,13))

idx_clusters_targets <- as.character(c(14,18,11,16,13,9,12,2,5,15,1,6,8,3,7,4,10,17))
idx_clusters_genes <- as.character(c(20,16,7,8,1,3,18,2,5,10,15,19,14,11,4,6,17))


## output files
FILE_OUT_SU_FINAL="img/heatmap-su-kd6-clusters.pdf"
FILE_OUT_LU_FINAL="img/heatmap-lu-kd6-clusters.pdf"

## aesthetics
NCOLORS=100
COLORS_BWR <- colorRampPalette(c("blue", "white", "red"))(NCOLORS)
COLORS_MKY <- colorRampPalette(c("magenta", "black", "yellow"))(NCOLORS)
COLORS_YKM <- colorRampPalette(c("yellow", "black", "magenta"))(NCOLORS)
COLORS_RKG <- colorRampPalette(c("red", "black", "green"))(NCOLORS)
breaks_l2fc <- seq(-2, 2, length.out=NCOLORS + 1)

Data

Loading Data

df_targets <- read_csv(CSV_TARGETS, col_types='cccc')
df_genes <- read_csv(CSV_GENES, col_types='ccc')

df_wui <- readRDS(FILE_WUI)

Preprocessing

sgid2gene <- df_wui %>%
    dplyr::select(sgID_AB, target_gene) %>%
    distinct(sgID_AB, target_gene) %>%
    deframe()

ens2gene <- df_wui %>%
    dplyr::select(gene_id, gene_name) %>%
    distinct(gene_id, gene_name) %>%
    deframe()

convert_rownames <- function (mat, in2out) {
    mat %>% set_rownames(in2out[rownames(.)])
}

convert_colnames <- function (mat, in2out) {
    mat %>% set_colnames(in2out[colnames(.)])
}

df_ntp <- filter(df_wui, 
                 target_gene == "non-targeting",
                 gene_id %in% df_genes$gene_id) %>%
    group_by(gene_id, gene_name) %>%
    filter(!is.na(wui)) %>%
    summarize(mean_tpm_su=weighted.mean(tpm_su, n_cells),
              sd_tpm_su=sqrt(sum((tpm_su-mean_tpm_su)^2)/n()),
              mean_tpm_lu=weighted.mean(tpm_lu, n_cells),
              sd_tpm_lu=sqrt(sum((tpm_lu-mean_tpm_lu)^2)/n()),
              mean_wui=weighted.mean(wui, n_cells),
               .groups='drop')

df_l2fc <- df_wui %>%
    filter(sgID_AB %in% df_targets$sgID_AB,
           gene_id %in% df_genes$gene_id) %>%
    inner_join(df_ntp, by=c("gene_id", "gene_name")) %>%
    mutate(l2fc_su=log2(tpm_su/mean_tpm_su),
           l2fc_lu=log2(tpm_lu/mean_tpm_lu)) %>%
    dplyr::select(gene_id, sgID_AB, tpm_su, l2fc_su, tpm_lu, l2fc_lu, mean_wui)

l2fc_su_target_gene <- df_l2fc %>%
    dplyr::select(gene_id, sgID_AB, l2fc_su) %>%
    pivot_wider(id_cols="sgID_AB", names_from="gene_id", values_from="l2fc_su") %>%
    column_to_rownames("sgID_AB") %>%
    as.matrix

l2fc_lu_target_gene <- df_l2fc %>%
    dplyr::select(gene_id, sgID_AB, l2fc_lu) %>%
    pivot_wider(id_cols="sgID_AB", names_from="gene_id", values_from="l2fc_lu") %>%
    column_to_rownames("sgID_AB") %>%
    as.matrix

Clusters Indices

idx_genes <- df_genes %>%
    filter(gene_id %in% colnames(l2fc_su_target_gene),
           cluster_id %in% idx_clusters_genes) %>%
    mutate(cluster_id=factor(cluster_id, levels=idx_clusters_genes)) %>%
    arrange(cluster_id, gene_name) %$%
    gene_id

idx_genes_null <- df_genes %>%
    filter(gene_id %in% colnames(l2fc_su_target_gene),
           cluster_id %in% NULL_CLUSTERS) %>%
    mutate(cluster_id=factor(cluster_id, levels=NULL_CLUSTERS)) %>%
    arrange(cluster_id, gene_name) %$%
    gene_id

idx_targets <- df_targets %>%
    filter(sgID_AB %in% rownames(l2fc_su_target_gene)) %>%
    mutate(cluster_id=factor(cluster_id, levels=idx_clusters_targets)) %>%
    arrange(cluster_id, target_gene) %$%
    sgID_AB

df_col_annots <- df_genes %>%
    filter(gene_id %in% colnames(l2fc_su_target_gene),
           cluster_id %in% idx_clusters_genes) %>%
    dplyr::select(gene_id, cluster_id) %>%
    mutate(cluster_id=factor(cluster_id, levels=idx_clusters_genes)) %>%
    dplyr::rename(gene_cluster=cluster_id) %>%
    column_to_rownames("gene_id")

df_row_annots <- df_targets %>%
    filter(sgID_AB %in% rownames(l2fc_su_target_gene)) %>%
    dplyr::select(sgID_AB, cluster_id) %>%
    mutate(cluster_id=factor(cluster_id, levels=idx_clusters_targets)) %>%
    dplyr::rename(target_cluster=cluster_id) %>%
    column_to_rownames("sgID_AB")

gaps_col <- df_genes %>%
    filter(gene_id %in% colnames(l2fc_su_target_gene),
           cluster_id %in% idx_clusters_genes) %>%
    mutate(cluster_id=factor(cluster_id, levels=idx_clusters_genes)) %>%
    arrange(cluster_id, gene_id) %$%
    table(cluster_id) %>%
    cumsum

gaps_row <- df_targets %>%
    filter(sgID_AB %in% rownames(l2fc_su_target_gene)) %>%
    mutate(cluster_id=factor(cluster_id, levels=idx_clusters_targets)) %>%
    arrange(cluster_id, sgID_AB) %$%
    table(cluster_id) %>%
    cumsum

Heatmaps

SU

pheatmap(l2fc_su_target_gene[idx_targets, idx_genes], 
         color=COLORS_BWR,
         breaks=breaks_l2fc,
         fontsize_col=1, fontsize_row=10,
         annotation_row=df_row_annots, 
         annotation_col=df_col_annots,
         show_colnames=FALSE, show_rownames=FALSE, scale='none',
         annotation_names_row=FALSE, annotation_names_col=FALSE,
         gaps_row=gaps_row,
         gaps_col=gaps_col,
         cluster_rows=FALSE, cluster_cols=FALSE)

LU

pheatmap(l2fc_lu_target_gene[idx_targets, idx_genes], 
         color=COLORS_BWR,
         breaks=breaks_l2fc,
         fontsize_col=1, fontsize_row=10,
         annotation_row=df_row_annots, 
         annotation_col=df_col_annots,
         show_colnames=FALSE, show_rownames=FALSE, scale='none',
         annotation_names_row=FALSE, annotation_names_col=FALSE,
         gaps_row=gaps_row,
         gaps_col=gaps_col,
         cluster_rows=FALSE, cluster_cols=FALSE)

Export Plot

pheatmap(l2fc_su_target_gene[idx_targets, idx_genes], 
         color=COLORS_BWR,
         breaks=breaks_l2fc,
         fontsize_col=1, fontsize_row=1,
         annotation_row=df_row_annots, 
         annotation_col=df_col_annots,
         show_colnames=TRUE, show_rownames=TRUE, scale='none',
         labels_row=sgid2gene[idx_targets],
         labels_col=ens2gene[idx_genes],
         annotation_names_row=FALSE, annotation_names_col=FALSE,
         gaps_row=gaps_row,
         gaps_col=gaps_col,
         cluster_rows=FALSE, cluster_cols=FALSE,
         filename=FILE_OUT_SU_FINAL, width=16, height=16)

pheatmap(l2fc_lu_target_gene[idx_targets, idx_genes], 
         color=COLORS_BWR,
         breaks=breaks_l2fc,
         fontsize_col=1, fontsize_row=1,
         annotation_row=df_row_annots, 
         annotation_col=df_col_annots,
         show_colnames=TRUE, show_rownames=TRUE, scale='none',
         labels_row=sgid2gene[idx_targets],
         labels_col=ens2gene[idx_genes],
         annotation_names_row=FALSE, annotation_names_col=FALSE,
         gaps_row=gaps_row,
         gaps_col=gaps_col,
         cluster_rows=FALSE, cluster_cols=FALSE,
         filename=FILE_OUT_LU_FINAL, width=16, height=16)

Example Targets

NUDT21

df_l2fc %>%
    filter(str_detect(sgID_AB, "NUDT21")) %>%
    ggplot(aes(x=l2fc_su, y=l2fc_lu)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(size=tpm_su+tpm_lu+0.1, color=mean_wui)) +
    scale_size_continuous(range=c(0.01,1), trans="log10") +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="SU [log2(fold-change)]", 
         y="LU [log2(fold-change)]",
         size="TPM [SU+LU]", color="Mean WUI",
         title="NUDT21") +
    theme_bw()

CPSF6

df_l2fc %>%
    filter(str_detect(sgID_AB, "CPSF6")) %>%
    ggplot(aes(x=l2fc_su, y=l2fc_lu)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(size=tpm_su+tpm_lu+0.1, color=mean_wui)) +
    scale_size_continuous(range=c(0.01,1), trans="log10") +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="SU [log2(fold-change)]",
         y="LU [log2(fold-change)]", 
         size="TPM [SU+LU]", color="Mean WUI",
         title="CPSF6") +
    theme_bw()

NUDT21 vs CPSF6

SU

df_l2fc %>%
    filter(str_detect(sgID_AB, "(NUDT21|CPSF6)")) %>%
    left_join(df_targets, by="sgID_AB") %>%
    dplyr::select(gene_id, target_gene, l2fc_su, l2fc_lu, mean_wui) %>%
    pivot_wider(id_cols=c("gene_id", "mean_wui"), names_from="target_gene", 
                values_from=c("l2fc_su", "l2fc_lu")) %>%
    ggplot(aes(x=l2fc_su_NUDT21, y=l2fc_su_CPSF6)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(color=mean_wui), size=1) +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="NUDT21 [log2(fold-change SU)]", 
         y="CPSF6 [log2(fold-change SU)]",
         color="Mean WUI") +
    theme_bw()

LU

df_l2fc %>%
    filter(str_detect(sgID_AB, "(NUDT21|CPSF6)")) %>%
    left_join(df_targets, by="sgID_AB") %>%
    dplyr::select(gene_id, target_gene, l2fc_su, l2fc_lu, mean_wui) %>%
    pivot_wider(id_cols=c("gene_id", "mean_wui"), names_from="target_gene", 
                values_from=c("l2fc_su", "l2fc_lu")) %>%
    ggplot(aes(x=l2fc_lu_NUDT21, y=l2fc_lu_CPSF6)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(color=mean_wui), size=1) +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="NUDT21 [log2(fold-change LU)]", 
         y="CPSF6 [log2(fold-change LU)]",
         color="Mean WUI") +
    theme_bw()

What is that gene in the top right?

df_l2fc %>%
    filter(str_detect(sgID_AB, "(NUDT21|CPSF6)")) %>%
    left_join(df_targets, by="sgID_AB") %>%
    filter(l2fc_lu > 2) %>% 
    mutate(gene_name=ens2gene[as.character(gene_id)])
## # A tibble: 5 × 11
##   gene_id            sgID_AB  tpm_su l2fc_su tpm_lu l2fc_lu mean_wui target_gene
##   <fct>              <chr>     <dbl>   <dbl>  <dbl>   <dbl>    <dbl> <chr>      
## 1 ENSG00000116580.20 CPSF6_+…   7.68   0.286   3.84    2.10    0.127 CPSF6      
## 2 ENSG00000163131.12 NUDT21_…   5.10   1.85    7.65    2.48    0.509 NUDT21     
## 3 ENSG00000173598.14 CPSF6_+…  33.7    0.280 171.      2.92    0.357 CPSF6      
## 4 ENSG00000173598.14 NUDT21_…  42.1    0.600 135.      2.57    0.357 NUDT21     
## 5 ENSG00000182093.16 NUDT21_…   3.83   1.45    2.55    2.42    0.236 NUDT21     
## # … with 3 more variables: target_gene_id <chr>, cluster_id <chr>,
## #   gene_name <fct>

Nudt4. This turns out to really be more of the SU isoform, so not as strange as this plot might indicate. The actual LU isoforms fell below the 10% usage minimum.

PAF1 Complex

PAF1

df_l2fc %>%
    filter(str_detect(sgID_AB, "PAF1")) %>%
    ggplot(aes(x=l2fc_su, y=l2fc_lu)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(size=tpm_su+tpm_lu+0.1, color=mean_wui)) +
    scale_size_continuous(range=c(0.01,1), trans="log10") +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="SU [log2(fold-change)]", 
         y="LU [log2(fold-change)]",
         size="TPM [SU+LU]", color="Mean WUI",
         title="PAF1") +
    theme_bw()

RTF1

df_l2fc %>%
    filter(str_detect(sgID_AB, "RTF1")) %>%
    ggplot(aes(x=l2fc_su, y=l2fc_lu)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(size=tpm_su+tpm_lu+0.1, color=mean_wui)) +
    scale_size_continuous(range=c(0.01,1), trans="log10") +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="SU [log2(fold-change)]", 
         y="LU [log2(fold-change)]",
         size="TPM [SU+LU]", color="Mean WUI",
         title="RTF1") +
    theme_bw()

CTR9

df_l2fc %>%
    filter(str_detect(sgID_AB, "CTR9")) %>%
    ggplot(aes(x=l2fc_su, y=l2fc_lu)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_vline(xintercept=0, color='grey80') + 
    geom_vline(xintercept=c(-1,1), linetype='dashed') + 
    geom_point(aes(size=tpm_su+tpm_lu+0.1, color=mean_wui)) +
    scale_size_continuous(range=c(0.01,1), trans="log10") +
    scale_color_viridis_b(breaks=c(0,0.33,0.67,1), option="B") + 
    labs(x="SU [log2(fold-change)]", 
         y="LU [log2(fold-change)]",
         size="TPM [SU+LU]", color="Mean WUI",
         title="CTR9") +
    theme_bw()

## Violin Plots ### PAF1 Complex

df_l2fc %>%
    filter(str_detect(sgID_AB, "(CTR9|RTF1|PAF1)")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()

CF I

df_l2fc %>%
    filter(str_detect(sgID_AB, "(NUDT21|CPSF6|OGFOD1)")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning: Removed 5 rows containing non-finite values (stat_ydensity).

CPSF Complex

df_l2fc %>%
    filter(str_detect(sgID_AB, "(CPSF1|CPSF2|CPSF3|CPSF4|WDR33|FIP1L1)")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

CF II

df_l2fc %>%
    filter(str_detect(sgID_AB, "(PCF11|CLP1)")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

Nuclear Export Factors

df_l2fc %>%
    filter(str_detect(sgID_AB, "(NXF1|THOC)")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

Splicing Factors

df_l2fc %>%
    filter(str_detect(sgID_AB, "SRSF")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

CSTF

df_l2fc %>%
    filter(str_detect(sgID_AB, "CSTF")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

Exosome

df_l2fc %>%
    filter(str_detect(sgID_AB, "EXOSC")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning: Removed 1 rows containing non-finite values (stat_ydensity).
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

Proteosome

df_l2fc %>%
    filter(str_detect(sgID_AB, "PSM[ABCD]")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning: Removed 1 rows containing non-finite values (stat_ydensity).
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

LSM

df_l2fc %>%
    filter(str_detect(sgID_AB, "LSM[0-9]")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

RPL

df_l2fc %>%
    filter(str_detect(sgID_AB, "^RPL")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

RPS

df_l2fc %>%
    filter(str_detect(sgID_AB, "^RPS")) %>%
    mutate(target_gene=sgid2gene[sgID_AB], 
           mean_wui_bin=cut(mean_wui, breaks=c(0,0.33,0.67,1.0)),
           l2fc_su=ifelse(l2fc_su < -4, -4, l2fc_su),
           l2fc_lu=ifelse(l2fc_lu < -4, -4, l2fc_lu)) %>%
    dplyr::select(target_gene, gene_id, l2fc_su, l2fc_lu, mean_wui_bin) %>%
    pivot_longer(cols=c("l2fc_su", "l2fc_lu"), 
                 names_prefix="l2fc_", names_to="isoform", 
                 values_to="l2fc") %>%
    mutate(isoform=factor(toupper(isoform), c("SU", "LU"))) %>%
    ggplot(aes(x=target_gene, y=l2fc)) +
    geom_hline(yintercept=0, color='grey80') + 
    geom_hline(yintercept=c(-1,1), linetype='dashed') + 
    geom_violin(aes(fill=mean_wui_bin), position="dodge", draw_quantiles=c(0.25, 0.5, 0.75)) +
    scale_fill_viridis_d(option="B", begin=0.4, end=0.9) + 
    scale_y_continuous(limits=c(-4,4)) +
    labs(x="Perturbation", 
         y="log2(fold-change)",
         fill="Mean WUI") +
    facet_wrap(vars(isoform), nrow=2) +
    theme_bw()
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values

## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values


Runtime Details

Session Info

## R version 4.1.1 (2021-08-10)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: macOS Big Sur 10.16
## 
## Matrix products: default
## BLAS/LAPACK: /Users/mfansler/miniconda3/envs/bioc_3_14/lib/libopenblasp-r0.3.18.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] SummarizedExperiment_1.24.0 Biobase_2.54.0             
##  [3] GenomicRanges_1.46.0        GenomeInfoDb_1.30.0        
##  [5] IRanges_2.28.0              S4Vectors_0.32.0           
##  [7] BiocGenerics_0.40.0         MatrixGenerics_1.6.0       
##  [9] matrixStats_0.61.0          pheatmap_1.0.12            
## [11] forcats_0.5.1               stringr_1.4.0              
## [13] dplyr_1.0.8                 purrr_0.3.4                
## [15] readr_2.1.1                 tidyr_1.1.4                
## [17] tibble_3.1.7                ggplot2_3.3.5              
## [19] tidyverse_1.3.1             magrittr_2.0.3             
## 
## loaded via a namespace (and not attached):
##  [1] bitops_1.0-7           fs_1.5.2               lubridate_1.8.0       
##  [4] bit64_4.0.5            RColorBrewer_1.1-2     httr_1.4.2            
##  [7] tools_4.1.1            backports_1.4.0        bslib_0.3.1           
## [10] utf8_1.2.2             R6_2.5.1               DBI_1.1.1             
## [13] colorspace_2.0-2       withr_2.4.3            tidyselect_1.1.1      
## [16] bit_4.0.4              compiler_4.1.1         cli_3.3.0             
## [19] rvest_1.0.2            xml2_1.3.3             DelayedArray_0.20.0   
## [22] labeling_0.4.2         sass_0.4.0             scales_1.1.1          
## [25] digest_0.6.29          rmarkdown_2.11         XVector_0.34.0        
## [28] pkgconfig_2.0.3        htmltools_0.5.2        dbplyr_2.1.1          
## [31] fastmap_1.1.0          highr_0.9              rlang_1.0.2           
## [34] readxl_1.3.1           rstudioapi_0.13        jquerylib_0.1.4       
## [37] generics_0.1.1         farver_2.1.0           jsonlite_1.7.2        
## [40] vroom_1.5.7            RCurl_1.98-1.5         GenomeInfoDbData_1.2.7
## [43] Matrix_1.3-4           Rcpp_1.0.7             munsell_0.5.0         
## [46] fansi_0.5.0            lifecycle_1.0.1        stringi_1.7.6         
## [49] yaml_2.2.1             zlibbioc_1.40.0        grid_4.1.1            
## [52] parallel_4.1.1         crayon_1.4.2           lattice_0.20-45       
## [55] haven_2.4.3            hms_1.1.1              knitr_1.39            
## [58] pillar_1.7.0           reprex_2.0.1           glue_1.6.2            
## [61] evaluate_0.15          modelr_0.1.8           vctrs_0.4.1           
## [64] tzdb_0.2.0             cellranger_1.1.0       gtable_0.3.0          
## [67] assertthat_0.2.1       xfun_0.30              broom_0.8.0           
## [70] viridisLite_0.4.0      ellipsis_0.3.2

Conda Environment

## Conda Environment YAML
name: base
channels:
  - conda-forge
  - bioconda
  - defaults
dependencies:
  - anaconda-client=1.8.0=pyhd8ed1ab_0
  - anaconda-project=0.10.2=pyhd8ed1ab_0
  - attrs=21.2.0=pyhd8ed1ab_0
  - awscli=1.25.79=py39h6e9494a_0
  - backports=1.0=py_2
  - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
  - backports.zoneinfo=0.2.1=py39h701faf5_5
  - bagit=1.8.1=pyhd8ed1ab_0
  - bagit-profile=1.3.1=pyhd8ed1ab_0
  - bdbag=1.6.1=pyhd8ed1ab_0
  - beautifulsoup4=4.9.3=pyhb0f4dca_0
  - blinker=1.4=py_1
  - boa=0.13.0=pyha770c72_0
  - boolean.py=3.7=py_0
  - boto3=1.24.78=pyhd8ed1ab_0
  - botocore=1.27.78=pyhd8ed1ab_0
  - brotlipy=0.7.0=py39h63b48b0_1004
  - bzip2=1.0.8=h0d85af4_4
  - c-ares=1.18.1=h0d85af4_0
  - ca-certificates=2022.9.24=h033912b_0
  - cachecontrol=0.12.11=pyhd8ed1ab_0
  - cairo=1.16.0=he43a7df_1008
  - cctools=973.0.1=hd9211c8_2
  - cctools_osx-64=973.0.1=h3e07e27_2
  - certifi=2022.9.24=pyhd8ed1ab_0
  - cffi=1.15.1=py39hae9ecf2_0
  - chardet=5.0.0=py39h6e9494a_0
  - charset-normalizer=2.0.0=pyhd8ed1ab_0
  - click=8.1.3=py39h6e9494a_0
  - clyent=1.2.2=py_1
  - colorama=0.4.3=py_0
  - commonmark=0.9.1=py_0
  - conda=4.14.0=py39h6e9494a_0
  - conda-build=3.21.9=py39h6e9494a_1
  - conda-forge-pinning=2021.10.10.22.03.30=hd8ed1ab_0
  - conda-libmamba-solver=22.6.0=pyhd8ed1ab_0
  - conda-pack=0.6.0=pyhd3deb0d_0
  - conda-package-handling=1.9.0=py39ha30fb19_0
  - conda-smithy=3.17.2=pyhd8ed1ab_0
  - conda-standalone=4.10.3=h694c41f_0
  - conda-suggest=0.1.1=pyh9f0ad1d_0
  - conda-suggest-conda-forge=2021.8.24=h694c41f_0
  - conda-verify=3.1.1=py39h6e9494a_1004
  - constructor=3.3.1=py39h6e9494a_0
  - cryptography=38.0.3=py39h7eb6a14_0
  - curl=7.86.0=h57eb407_1
  - dataclasses=0.8=pyhc8e2a94_3
  - dbus=1.13.6=ha13b53f_2
  - deprecated=1.2.12=pyh44b312d_0
  - docutils=0.16=py39h6e9494a_3
  - expat=2.4.1=he49afe7_0
  - ffq=0.2.1=pyhdfd78af_0
  - filelock=3.0.12=pyh9f0ad1d_0
  - fmt=9.1.0=hb8565cd_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=hab24e00_0
  - fontconfig=2.13.1=h10f422b_1005
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - freetype=2.10.4=h4cff582_1
  - fribidi=1.0.10=hbcb3906_0
  - frozendict=2.3.4=py39h701faf5_0
  - future=0.18.2=py39h6e9494a_5
  - gawk=5.1.0=h8a989fb_0
  - gdk-pixbuf=2.42.6=h2e6141f_0
  - gettext=0.21.1=h8a4c099_0
  - giflib=5.2.1=hbcb3906_2
  - git=2.34.1=pl5321h9a53687_0
  - git-lfs=2.13.3=h694c41f_0
  - gitdb=4.0.7=pyhd8ed1ab_0
  - gitpython=3.1.18=pyhd8ed1ab_0
  - glib=2.70.2=hcf210ce_0
  - glib-tools=2.70.2=hcf210ce_0
  - glob2=0.7=py_0
  - globus-sdk=2.0.1=pyhd8ed1ab_0
  - gmp=6.2.1=h2e338ed_0
  - gnutls=3.6.13=h756fd2b_1
  - graphite2=1.3.13=h2e338ed_1001
  - harfbuzz=2.9.0=h159f659_0
  - htop=3.2.1=h398481e_0
  - htslib=1.15=hc057d7f_0
  - hub=2.14.2=hc7d050b_0
  - icu=68.1=h74dc148_0
  - idna=3.1=pyhd3deb0d_0
  - importlib-metadata=4.11.4=py39h6e9494a_0
  - importlib_metadata=4.11.4=hd8ed1ab_0
  - importlib_resources=5.4.0=pyhd8ed1ab_0
  - inotify_simple=1.3.5=pyha770c72_3
  - ipython_genutils=0.2.0=py_1
  - isodate=0.6.0=py_1
  - jbig=2.1=h0d85af4_2003
  - jinja2=3.0.1=pyhd8ed1ab_0
  - jmespath=0.10.0=pyh9f0ad1d_0
  - joblib=1.0.1=pyhd8ed1ab_0
  - jpeg=9d=hbcb3906_0
  - json5=0.9.5=pyh9f0ad1d_0
  - jsonschema=4.3.1=pyhd8ed1ab_0
  - jupyter_core=4.11.1=py39h6e9494a_0
  - krb5=1.19.3=hb49756b_0
  - ld64=609=hd2e7500_2
  - ld64_osx-64=609=h2487922_2
  - ldid=2.1.2=h6a69015_3
  - lerc=2.2.1=h046ec9c_0
  - libarchive=3.5.2=h2b60450_1
  - libcurl=7.86.0=h57eb407_1
  - libcxx=14.0.6=hccf4f1f_0
  - libdeflate=1.10=h0d85af4_0
  - libedit=3.1.20191231=h0678c8f_2
  - libev=4.33=haf1e3a3_1
  - libffi=3.4.2=h0d85af4_5
  - libglib=2.70.2=hf1fb8c0_0
  - libiconv=1.17=hac89ed1_0
  - libidn2=2.3.2=h0d85af4_0
  - liblief=0.11.5=he49afe7_0
  - libllvm12=12.0.1=hd011deb_2
  - libmamba=1.0.0=h2bf831e_2
  - libmambapy=1.0.0=py39he069e75_2
  - libnghttp2=1.47.0=h7cbc4dc_1
  - libpng=1.6.37=h7cec526_2
  - librsvg=2.50.7=hd2a7919_0
  - libsolv=0.7.22=hd9580d2_0
  - libssh2=1.10.0=h7535e13_3
  - libtiff=4.3.0=h1167814_0
  - libunistring=0.9.10=h0d85af4_0
  - libwebp-base=1.2.1=h0d85af4_0
  - libxml2=2.9.12=h93ec3fd_0
  - libxslt=1.1.33=h5739fc3_2
  - libzlib=1.2.13=hfd90126_4
  - license-expression=1.2=py_0
  - lockfile=0.12.2=py_1
  - lxml=4.8.0=py39h63b48b0_2
  - lz4-c=1.9.3=he49afe7_1
  - lzo=2.10=haf1e3a3_1000
  - mamba=1.0.0=py39ha435c47_2
  - markupsafe=2.1.1=py39h63b48b0_1
  - msgpack-python=1.0.4=py39h92daf61_1
  - msrest=0.6.21=pyh44b312d_0
  - nbformat=5.1.3=pyhd8ed1ab_0
  - ncurses=6.3=h96cf925_1
  - nettle=3.6=hedd7734_0
  - oauthlib=3.1.1=pyhd8ed1ab_0
  - openssl=1.1.1s=hfd90126_0
  - pango=1.48.9=ha05cd14_0
  - patch=2.7.6=hbcf498f_1002
  - pcre=8.45=he49afe7_0
  - pcre2=10.37=ha16e1b2_0
  - perl=5.32.1=0_h0d85af4_perl5
  - pigz=2.6=h5dbffcc_0
  - pip=21.2.4=pyhd8ed1ab_0
  - pixman=0.40.0=hbcb3906_0
  - pkginfo=1.7.1=pyhd8ed1ab_0
  - popt=1.16=h7b079dc_2002
  - prompt-toolkit=3.0.20=pyha770c72_0
  - prompt_toolkit=3.0.20=hd8ed1ab_0
  - psutil=5.9.2=py39ha30fb19_0
  - py-lief=0.11.5=py39h9fcab8e_0
  - pyasn1=0.4.8=py_0
  - pybind11-abi=4=hd8ed1ab_3
  - pycosat=0.6.3=py39h63b48b0_1010
  - pycparser=2.20=pyh9f0ad1d_2
  - pycrypto=2.6.1=py39h89e85a6_1006
  - pygithub=1.53=py_0
  - pygments=2.10.0=pyhd8ed1ab_0
  - pyjwt=1.7.1=py_0
  - pyrsistent=0.18.1=py39h63b48b0_1
  - pysocks=1.7.1=pyha2e5f31_6
  - python=3.9.13=h57e37ff_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python-libarchive-c=4.0=py39h6e9494a_1
  - python-tzdata=2021.5=pyhd8ed1ab_0
  - python_abi=3.9=2_cp39
  - pytz=2021.1=pyhd8ed1ab_0
  - pytz-deprecation-shim=0.1.0.post0=py39h6e9494a_2
  - pyyaml=5.4.1=py39h701faf5_3
  - readline=8.1.2=h3899abd_0
  - reproc=14.2.3=h0d85af4_0
  - reproc-cpp=14.2.3=he49afe7_0
  - requests=2.28.1=pyhd8ed1ab_1
  - requests-oauthlib=1.3.0=pyh9f0ad1d_0
  - rich=10.16.1=pyhd8ed1ab_0
  - ripgrep=13.0.0=h244e342_0
  - rsa=4.7.2=pyh44b312d_0
  - rsync=3.2.7=ha1fed10_0
  - ruamel.yaml=0.17.21=py39h63b48b0_1
  - ruamel.yaml.clib=0.2.6=py39h63b48b0_1
  - ruamel_yaml=0.15.80=py39h701faf5_1007
  - s3transfer=0.6.0=pyhd8ed1ab_0
  - scrypt=0.8.18=py39hbfd427f_4
  - setuptools=65.3.0=pyhd8ed1ab_1
  - six=1.16.0=pyh6c4a22f_0
  - smartmontools=7.2=h940c156_0
  - smmap=3.0.5=pyh44b312d_0
  - soupsieve=2.3.1=pyhd8ed1ab_0
  - sqlite=3.38.5=hd9f0692_0
  - tapi=1100.0.11=h9ce4665_0
  - tk=8.6.12=h5dbffcc_0
  - toolz=0.11.1=py_0
  - tornado=6.2=py39h701faf5_0
  - tqdm=4.62.2=pyhd8ed1ab_0
  - traitlets=5.1.0=pyhd8ed1ab_0
  - typing_extensions=3.10.0.0=pyha770c72_0
  - tzdata=2021e=he74cb21_0
  - tzlocal=4.2=py39h6e9494a_1
  - urllib3=1.26.6=pyhd8ed1ab_0
  - vsts-python-api=0.1.22=py_0
  - watchgod=0.7=pyhd8ed1ab_0
  - wcwidth=0.2.5=pyh9f0ad1d_2
  - wget=1.20.3=h52ee1ee_1
  - wheel=0.37.0=pyhd8ed1ab_1
  - wrapt=1.14.1=py39h701faf5_0
  - xxhash=0.8.0=h35c211d_3
  - xz=5.2.5=haf1e3a3_1
  - yaml=0.2.5=haf1e3a3_0
  - yaml-cpp=0.7.0=hb486fe8_1
  - zipp=3.5.0=pyhd8ed1ab_0
  - zlib=1.2.13=hfd90126_4
  - zstd=1.5.2=hfa58983_4
  - pip:
    - pyopenssl==20.0.1
prefix: /Users/mfansler/miniconda3